// 使用严格模式
'use strict';
// 导入file system 模块
const fs = require('fs');
const spawn = require('child_process').spawn;
// first is node, and then the script, and the rest
const filename = process.argv[2];
if (!filename){
    throw Error('Please specifiy a filename! ');
}
// 开始监听文件，设置回调函数。该回调是一个箭头函数（没有独立的this），作用是输出文件改变的消息。
fs.watch(filename,()=>{
    console.log(`File ${filename} Changed!`);
    const ls = spawn('ls',['-l','-h',filename]);
    let output='';
    // once got data, attatch to output. it will automaticlly call toString;
    ls.stdout.on('data',chunk=>{output+=chunk});
    //After stream closed, split the output then print
    ls.on('close',()=>{
        const parts = output.split(/\s+/);
        console.log([parts[0],parts[7],parts[8]]);

    });
});
// 调用了fs.watch 程序不会主动退出，会无限监听事件发生。就是不需要显式创建事件循环把程序兜住。
console.log(`Now start watching ${filename}...`);

